// 6-15 指定位置输出字符串 (20分)
// 本题要求实现一个函数，对给定的一个字符串和两个字符，打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

// 函数接口定义：
// char *match( char *s, char ch1, char ch2 );

// 函数match应打印s中从ch1到ch2之间的所有字符，并且返回ch1的地址。

// 裁判测试程序样例：
#include <stdio.h>

#define MAXS 10

char *match(char *s, char ch1, char ch2);

int main()
{
    char str[MAXS], ch_start, ch_end, *p;

    scanf("%s\n", str);
    scanf("%c %c", &ch_start, &ch_end);
    p = match(str, ch_start, ch_end);
    printf("%s\n", p);

    return 0;
}

char *match(char *s, char ch1, char ch2)
{
    int idx, found = 0;  // 0 为未找到ch1， 1为找到
    char *ch_start = 0;
    for (idx = 0; idx < MAXS && s[idx] != '\0'; idx++)
    {
        if (s[idx] == ch1)
        {
            ch_start = &s[idx];
            found = 1;
            break;
        }
    }
    if (found)  // 如果找到了
    {                           // 先打印ch1，再判断ch1和ch2是否相等，即s[idx++] != ch2，
        printf("%c", s[idx]);   // 注意idx++的作用，这样的话之后的s[idx] != '\0'语句判断的就是下一个字符是否为空字符
        while (s[idx++] != ch2 && s[idx] != '\0') // 注意若是没有找到ch2，打印至字符串末尾就退出，这就是s[idx] != '\0'的作用
        {
            printf("%c", s[idx]);
        }
        printf("\n");
        return ch_start;
    }
    else
    {
        printf("\n");
        return &s[idx]; // 若是没找到，此时s[idx] == '\0'
    }   
}

// 输入样例1：
// program
// r g

// 输出样例1：
// rog
// rogram

// 输入样例2：
// program
// z o

// 输出样例2：
// (空行)
// (空行)

// 输入样例3：
// program
// g z

// 输出样例3：
// gram
// gram

// 作者: C课程组
// 单位: 浙江大学
// 时间限制: 400 ms
// 内存限制: 64 MB
